public class PasswordSystem {
    // 定义状态
    private enum State {
        ReadingInput, PasswordError, Locked
    }

    // 当前状态
    private State currentState;

    // 密码尝试次数计数器
    private int attemptCount;

    // 正确的密码
    private final String correctPassword = "1234";

    // 构造函数，初始化状态和参数
    public PasswordSystem() {
        currentState = State.ReadingInput;
        attemptCount = 0;
    }

    // 模拟读取输入字符
    public void readKeyCharacter(String input) {
        if (currentState == State.Locked) {
            System.out.println("系统已锁定，请等待120秒。");
            return;
        }

        // 模拟密码输入过程
        if (input.equals(correctPassword)) {
            currentState = State.ReadingInput; // 这里应该是系统功能选择状态
            System.out.println("密码正确，进入系统功能选择。");
        } else {
            attemptCount++;
            if (attemptCount >= 3) {
                currentState = State.Locked;
                System.out.println("密码错误3次，系统锁定。");
            } else {
                System.out.println("密码错误，请重试。");
            }
        }
    }

    // 模拟时间流逝，超过120秒后解锁
    public void timePasses() {
        if (currentState == State.Locked) {
            currentState = State.ReadingInput;
            System.out.println("120秒已过，系统解锁，可以重新输入密码。");
        }
    }

    public static void main(String[] args) {
        PasswordSystem system = new PasswordSystem();

        // 模拟一系列操作
        system.readKeyCharacter("1234"); // 密码正确，进入系统功能选择
        system.readKeyCharacter("0000"); // 密码错误
        system.readKeyCharacter("0000"); // 密码错误
        system.readKeyCharacter("0000"); // 密码错误，系统锁定
        system.timePasses(); // 120秒后解锁
        system.readKeyCharacter("1234"); // 密码正确，再次进入系统功能选择
    }
}